import pymysql


class BDUtil:
    # 定义全局变量
    conn = None
    cursor = None

    # @classmethod类方法调用直接使用类名.方法名，如果不使用装饰器，调用方法需要实例化对象调用
    # 定义数据库连接方式
    @classmethod
    def __connect_db(cls):
        cls.conn = pymysql.connect(host="211.103.136.244", port=7061, user="student", password="iHRM_student_2022",
                                   database="ihrm", charset="utf8")
        return cls.conn

    # 定义关闭数据库的方法
    @classmethod
    def __close_db(cls):
        cls.conn.close()

    # 定义一个查询方法
    @classmethod
    def query_db(cls, sql):
        # 定义全局变量
        result = None
        cursor = None
        try:
            # 创建数据库连接
            cls.conn = cls.__connect_db()
            # 获取游标
            cursor = cls.conn.cursor()
            # 执行sql
            cursor.execute(sql)
            # 获取一行数据
            result = cursor.fetchone()
        except Exception as e:
            print("查询数据出现异常:", e)
        finally:
            # 关闭游标
            cursor.close()
            # 关闭连接
            cls.__close_db()
            # 返回结果
            return result

    # 定义增删改的方法
    @classmethod
    def uid_db(cls, sql):
        cursor = None
        try:
            # 创建数据库连接
            cls.conn = cls.__connect_db()
            # 获取游标
            cursor = cls.conn.cursor()
            # 执行sql
            cursor.execute(sql)
            # 输出影响的行
            affected_rows = cls.conn.affected_rows()
            print("受影响的行：", affected_rows)
            cls.conn.commit()
        except Exception as e:
            print("Exception:", e)
            cls.conn.rollback()
        finally:
            # 关闭游标
            cursor.close()
            # 关闭连接
            cls.__close_db()


# if __name__ == '__main__':
#     # print(BDUtil.query_db("select * from t_book"))
#     BDUtil.uid_db("update t_book SET `READ` = `read` +1  where id=1997419")
